package com.jingjiu.homeservicesbiz.service;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jingjiu.homeservicesapi.Vo.UserVo;
import com.jingjiu.homeservicesapi.domain.UserInfo;
import com.jingjiu.homeservicesapi.dto.UserRelativeDTO;
import com.jingjiu.homeservicesbiz.mapper.UserInfoMapper;

import com.jingjiu.homeservicesbiz.mapper.UserRelativeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;



/**
 * 用户信息：用于存储登录和个人信息资料Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-04-16
 */
@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo>
{
    @Autowired
    private UserInfoMapper userInfoMapper;
    @Autowired
    private UserRelativeMapper userRelativeMapper;
    /**
     * 查询用户信息：用于存储登录和个人信息资料
     * 
     * @param id 用户信息：用于存储登录和个人信息资料主键
     * @return 用户信息：用于存储登录和个人信息资料
     */

    public UserVo selectUserInfoById(Long id)
    {
        UserVo userVo = userInfoMapper.selectUserInfoById(id);
        // 对该条UserVo，查询对应的 userRelativeDTOs 并设置进去
        userVo.setUserRelativeDTOs(userRelativeMapper.selectUserRelativesById(userVo.getId()));
        return userVo;
    }


    public UserInfo selectUserInfoByAccount(String account) {
        return userInfoMapper.selectUserInfoByAccount(account);
    }

    /**
     * 查询用户信息：用于存储登录和个人信息资料列表
     * 
     * @param userInfo 用户信息：用于存储登录和个人信息资料
     * @return 用户信息：用于存储登录和个人信息资料
     */


    public Page<UserVo> selectUserInfoList(Page<UserInfo> page, UserInfo userInfo) {
        // 查询分页数据（不包含 userRelativeDTOs）
        Page<UserVo> userVoPage = userInfoMapper.selectUserVoPage(page, userInfo);

        // 遍历每条 UserVo，查询对应的 userRelativeDTOs 并设置进去
        for (UserVo userVo : userVoPage.getRecords()) {
            List<UserRelativeDTO> relatives = userRelativeMapper.selectUserRelativesById(userVo.getId());
            userVo.setUserRelativeDTOs(relatives);
        }

        return userVoPage;
    }

//    LambdaQueryWrapper<UserInfo> wrapper = new LambdaQueryWrapper<>();
//
//        if (userInfo.getAccount() != null && !userInfo.getAccount().isEmpty()) {
//    wrapper.like(UserInfo::getAccount, userInfo.getAccount());
//}
//        if (userInfo.getName() != null && !userInfo.getName().isEmpty()) {
//    wrapper.like(UserInfo::getName, userInfo.getName());
//}
//        if (userInfo.getGender() != null && !userInfo.getGender().isEmpty()) {
//    wrapper.eq(UserInfo::getGender, userInfo.getGender());
//}
//        if (userInfo.getPhone() != null && !userInfo.getPhone().isEmpty()) {
//    wrapper.like(UserInfo::getPhone, userInfo.getPhone());
//}
//        if (userInfo.getUserType() != null && !userInfo.getUserType().isEmpty()) {
//    wrapper.eq(UserInfo::getUserType, userInfo.getUserType());
//}
//        if (userInfo.getAge() != null) {
//    wrapper.eq(UserInfo::getAge, userInfo.getAge());
//}
//
//    // 更多字段可根据实际情况添加查询条件
//
//    // 按创建时间倒序排列
//        wrapper.orderByDesc(UserInfo::getCreatedAt);
//
//        return this.baseMapper.selectPage(page, wrapper);

    /**
     * 新增用户信息：用于存储登录和个人信息资料
     * 
     * @param userInfo 用户信息：用于存储登录和个人信息资料
     * @return 结果
     */

    public int insertUserInfo(UserInfo userInfo)
    {
        return userInfoMapper.insertUserInfo(userInfo);
    }

    /**
     * 修改用户信息：用于存储登录和个人信息资料
     * 
     * @param userInfo 用户信息：用于存储登录和个人信息资料
     * @return 结果
     */

    public int updateUserInfo(UserInfo userInfo)
    {
        return userInfoMapper.updateUserInfo(userInfo);
    }

    /**
     * 批量删除用户信息：用于存储登录和个人信息资料
     * 
     * @param ids 需要删除的用户信息：用于存储登录和个人信息资料主键
     * @return 结果
     */


    /**
     * 删除用户信息：用于存储登录和个人信息资料信息
     * 
     * @param id 用户信息：用于存储登录和个人信息资料主键
     * @return 结果
     */

    public int deleteUserInfoById(Long id)
    {
        return userInfoMapper.deleteUserInfoById(id);
    }
}
